Computer-aided design (CAD) software allows a user to construct and manipulate complex three-dimensional (3D) models. A number of different modeling techniques can be used to create a 3D model. One such technique is a solid modeling technique, which provides for topological 3D models where the 3D model is a collection of interconnected topological entities (e.g., vertices, edges, and faces). The topological entities have corresponding supporting geometrical entities (e.g., points, trimmed curves, and trimmed surfaces). The trimmed surfaces correspond to topological faces bounded by edges. Hereinafter, the terms vertex, edge, and face will be used interchangeably with their respective, corresponding geometric entities.
A design engineer is a typical user of a 3D CAD system. The design engineer designs physical and aesthetic aspects of 3D models, and is skilled in 3D modeling techniques. The design engineer creates parts and may assemble the parts into a subassembly or an assembly. A subassembly may also consist of other subassemblies. An assembly is designed using parts and subassemblies. Parts and subassemblies are hereinafter collectively referred to as components.
During the design process, an engineer may simulate the design of a model to analyze and evaluate the motion of moving parts of the product being designed. Typically, simulation software applies physical and scientific properties. Such a simulation may be executed by an engineering simulation process, examples of which are SolidWorks® Motion, SolidWorks® Simulation Xpress, and SolidWorks® Simulation, which use the CAD model data to set up and execute motion or simulation studies and are available from Dassault Systemes SolidWorks Corporation of Waltham, Mass.
Rather than setting up and executing a simulation of a model, a user may choose to animate the moving parts without taking into account all physical and scientific properties. Setting up and running an animation versus a simulation is generally less time consuming and gives a user more immediate feedback with regards to the feasibility of a design.
A problem arises when creating an animation to simulate the relationships between moving parts when the relationships change over the course of the animation. In general, animation software applications allow a user to define a hierarchical relationship among the parts of a model. More sophisticated simulation software applications automatically define a hierarchical relationship from the relationships created during the model design phase. Both approaches work well for structurally connected models, for example, a robotic arm. However, consider a robotic arm gripper manipulating an object. At times the gripper is not grasping the object, for example before the object is picked up by the gripper and after the object is placed in another location by the gripper. At other times though, the gripper is holding the object and the object moves with the gripper. The gripper and the object are not structurally related, and the user cannot define a static rigid relationship between the two.
Software used to animate objects commonly allow the user to define a relationship and then switch the relationship on and off over the course of the animation. However, such an approach is not intuitive. The user must explicitly predefine all the relationships that may be needed over the entire animation, and the user must explicitly enable and disable those relationships at exactly the right times to make the parts move together or not move together as needed. The present invention avoids the problem of requiring a user to explicitly define in advance all the parts that may be directly moved and all the temporary relationships that may be required over the course of an animation or a simulation.